package com.dmxh.controller;

import com.dmxh.result.Result;
import com.dmxh.result.ResultConstant;
import com.dmxh.service.CartService;
import com.dmxh.util.JwtUtil;
import io.jsonwebtoken.Claims;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.Map;
import java.util.Objects;

@RestController
@RequestMapping("/cart")
public class CartController {

    @Autowired
    private CartService cartService;

    // TODO: 2024/5/23 加购物车  测试接口是否能拿到数据  以及token怎么获取  itemid是写死的   num是输入的

    //加入购物车
    @PostMapping("/addCart")      //这个token的名称需要注意   加上注解 vue自动获取请求头中的token
    public Result addCart(@RequestHeader String frontToken, @RequestBody Map<String, String> cartMap) {
        String itemId1 = cartMap.get("itemId");
        long itemId = Long.parseLong(itemId1);
        String num1 = cartMap.get("num");
        Integer num = Integer.valueOf(num1);

        /*获取当前登录的用户信息*/
        Claims claims = JwtUtil.parseJwt(frontToken);
        String userid = claims.getId();
        cartService.addCart(userid, itemId, num);
        return Result.response(ResultConstant.SUCCESS);/*操作成功*/
    }


    //获取购物车
    @GetMapping("/getCart")
    public Result getCart(@RequestHeader String frontToken) {/*只要这个token的变量名称和前端页面的axiosconfig中设置的一样就可以自动通过后端的注解请求头获取到token了*/
        Claims claims = JwtUtil.parseJwt(frontToken);
        String userid = claims.getId();
        return Result.ok().setData(this.cartService.getCart(userid));
    }
}
